package com.shujia.day08;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo02Iterator {
    public static void main(String[] args) {
        /*
            collection.iterator() 方法的调用
            对于ArrayList中iterator方法返回了一个Itr对象
                new Itr();

            // Itr类为ArrayList的成员内部类 并且是属于私有的 private 私有的只能在当前 ArrayList类中使用
            //  所以可以 new  并且实现了 Iterator 接口
            private class Itr implements Iterator<E> {
                // cursor 游标; 指针
                int cursor;       // index of next element to return
                int lastRet = -1; // index of last element returned; -1 if no such
                int expectedModCount = modCount;

                public boolean hasNext() {
                    return cursor != size;
                }

                @SuppressWarnings("unchecked")
                public E next() {
                    checkForComodification();  //
                    int i = cursor;
                    if (i >= size)
                        throw new NoSuchElementException();
                    // Object数组
                    Object[] elementData = ArrayList.this.elementData;

                    if (i >= elementData.length)
                        throw new ConcurrentModificationException();
                        // 对游标进行移动1位
                    cursor = i + 1;
                    // 获取当前i的下标数据
                    return (E) elementData[lastRet = i];
                }
            }
         */
        Collection collection = new ArrayList();
        Iterator iterator = collection.iterator(); // iterator => Collection 是抽象的

        int i = 1;
        Integer integer = i;
        Integer integer1 = new Integer(i);
        Integer integer2 = Integer.valueOf(i);
        System.out.println(integer == integer1); // false
        System.out.println(integer == integer2); // true



    }
}
